package be.ipl.finito.tests;

import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertFalse;
import static org.testng.AssertJUnit.assertNotNull;
import static org.testng.AssertJUnit.assertTrue;

import java.util.Map;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

import be.ipl.finito.domaine.Grille;
import be.ipl.finito.domaine.Joueur;
import be.ipl.finito.domaine.Partie;
import be.ipl.finito.usecases.GestionGrille;
import be.ipl.finito.usecases.GestionJoueur;
import be.ipl.finito.usecases.GestionPartie;

public class GestionGrilleTest {

	private static GestionPartie gestionPartie;
	private static GestionJoueur gestionJoueur;
	private static GestionGrille gestionGrille;

	private static Joueur joueur1, joueur2, joueur3, joueur4;
	private static Partie partie;
	private static Grille grille;

	@BeforeClass
	public void beforeClass() throws NamingException {
		Context jndi = new InitialContext();
		gestionPartie = (GestionPartie) jndi
				.lookup("ejb:Finito/GestionPartieImpl!be.ipl.finito.usecases.GestionPartie");
		gestionJoueur = (GestionJoueur) jndi
				.lookup("ejb:Finito/GestionJoueurImpl!be.ipl.finito.usecases.GestionJoueur");
		gestionGrille = (GestionGrille) jndi
				.lookup("ejb:Finito/GestionGrilleImpl!be.ipl.finito.usecases.GestionGrille");

		partie = gestionPartie.creerPartie("Partie de test");

		gestionJoueur.inscrireJoueur("joueur1", "1234", "nom", "prenom", "email");
		gestionJoueur.inscrireJoueur("joueur2", "1234", "nom", "prenom", "email");

		joueur1 = gestionJoueur.seConnecter("joueur1", "1234");
		joueur2 = gestionJoueur.seConnecter("joueur2", "1234");

		gestionPartie.rejoindrePartie(partie, joueur1);
		gestionPartie.rejoindrePartie(partie, joueur2);

		gestionPartie.commencerPartie(partie);
		grille = gestionPartie.getGrille(partie, joueur1);
	}
}
